package com.king.mind;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

/**
 * 定义的节点对象，包含坐标，尺寸，以及一些业务属性：标题，副标题（备注），标签，
 * 
 * @author king
 * @date 2025年6月17日-11:07:23
 */
@Getter
@Setter
@ToString
public class ChapterNode extends Node {

	private String title;
	private String subTitle;
	private String[] labels;


	/**
	 * 这里的labels方法是一个测试方法，用于模拟添加不同数量的label，使得每个Node的高度不一致
	 * 
	 * @param i
	 * @return
	 * @author king
	 * @date 2025年6月17日-11:39:02
	 */
	public ChapterNode labels(int i) {
		this.labels = new String[i];
		for (int ii = 0; ii < i; ii++) {
			this.labels[ii] = "k";
		}
		return this;
	}

	/**
	 * width是固定的，但是Height不是，因为其包含了不定数量的label
	 * 
	 * @return
	 * @author king
	 * @date 2025年6月17日-11:08:36
	 */
	public double getHeight() {
		double labelHeight = 0;
		if (labels != null) {
			/*
			 * 标签的高度，取决于其数量
			 */
			labelHeight = labels.length * NodeProperty.LABEL_HEIGHT;
		}
		return NodeProperty.TITLE_HEIGHT + NodeProperty.SUB_TITLE_HEIGHT + labelHeight;
	}
}